﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//库函数
//int main()
//{
	////strcpy是一个copy函数
	//char arr1[20] = { 0 };
	//char arr2[] = {"nihao"};

	//strcpy(arr1,arr2);//目的地在前，源头在后
	//printf("%\s",arr1);


	//memset为内存设置函数
	//敲库函数代码时必须要有其对应的头文件
	//(对象，所要变成的东西，个数)
	//char arr[20] = { "xiaochou" };
	////memset(arr, 'y', 5);
	//memset(arr + 3, 'x', 3);
	//printf("%s\n", arr);

	//return 0; 
//}


//自定义函数有实参和形参
//int get_max(int x, int y)//返回什么类型
//{   //前面就输什么,不写的话默认返回类型是int
//	 //若不返回，则一般输void
//	return (x > y ? x : y);//三目操作符
//}
//
//int main()
//{
//
//	int a, b = 0;
//	scanf("%d,%d", &a, &b);//若为逗号，则运行时也要输逗号
//	int m = get_max(a, b);
//	printf("%d\n", m);
//
//	return 0;
//}


//void swap(int* px, int* py)
//{ //因为不用返回,所以不用注明类型
//    //int z=0;
//	//z=x;
//	//x=y;
//	//y=z;
//	//此种方法不行
//	int z = *px;//z=a
//	*px = *py;//a=b
//	*py = z;//b=z
//}  //运用了指针,形式如 int*px=&a;意思是把*px当作a了
//
////当实参传递给形参的时候，形参是实参的一份临时拷贝
////对形参的修改不会影响实参
//
//int ADD(int x, int y)
//{
//	int z = 0;
//	return z = x + y;
//}
//
//int main()
//{
//	int a, b = 0;
//	scanf("%d %d",&a,&b);
//
//	int c = ADD(a, b);
//	printf("%d\n",c);
//
//	printf("交换前:%d %d\n",a,b);
//	//交换
//	swap(&a, &b);//对应上面的指针型结构
//	//如果要改变实参的值,则取地址
//	printf("交换后:%d %d\n",a,b);
//
//	return 0;
//}

//传值调用：形参不会影响实参
//传址调用：函数内部和外部建立了一定的联系（形参影响实参）

//判断⼀年是不是闰年
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//	{
//		return 1;   //条件加上括号更美化、直观
//	}
//	else
//	{
//		return 0;
//	}
//}
//
//int main()
//{
//	int y = 0;
//	scanf("%d", &y);
//	int r = is_leap_year(y);
//	if (r == 1)
//	{
//		printf("闰年\n");
//	}
//	else
//	{
//		printf("⾮闰年\n");
//	}
//	return 0;
//}

//函数可以嵌套调用，但不能嵌套定义

//test()
//{
//	printf("Hello,World\n");
//}
//
//int main()
//{
//	test();
//	  //链式访问
////第一和第二个printf分别打印的
////是第二和第三个printf的函数返回值所占的字节空间
//	printf("%d\n",printf("%d",printf("%d",43)));
//
//	return 0;
//}

//main函数不需要参数,但本质上main函数是有参数的
//main函数有3个参数
//int main(int argc,char*argv[],char*envp[])
